package com.shujia.wyh.day27.network.tcpcoding;

import java.io.InputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

/*
        TCP协议服务器端接收数据步骤：
            1、创建服务器端的Socket对象
            2、监听客户端的连接，返回一个Socket对象，这个Socket对象就封装了客户端的ip等一些信息
            3、获取通道中的输入流对象，读取数据并显示在控制台上
            4、释放资源（一般情况下，服务器一旦启动，很少关闭）
 */
public class ServerDemo1 {
    public static void main(String[] args) throws Exception {
        //1、创建服务器端的Socket对象
        //将程序绑定到计算机上的一个端口号上
        ServerSocket ss = new ServerSocket(12345);

        //2、监听客户端的连接，返回一个Socket对象，这个Socket对象就封装了客户端的ip等一些信息
        //Socket accept()
        //侦听要连接到此套接字并接受它。
        Socket socket = ss.accept(); //阻塞

        while (true){
            //3、获取通道中的输入流对象，读取数据并显示在控制台上
            InputStream is = socket.getInputStream();
            byte[] bytes = new byte[1024];
            int length = is.read(bytes);
            String s = new String(bytes, 0, length);

            //获取客户端的ip地址
            InetAddress address = socket.getInetAddress();
            String ip = address.getHostAddress();
            String hostName = address.getHostName();
            System.out.println(ip + "，主机名：" + hostName + "发送的数据为：" + s);
        }


        //4、释放资源（一般情况下，服务器一旦启动，很少关闭）
//        ss.close();

    }
}
